namespace WenYu.Core.Lexer;

/// <summary>
/// Token类型枚举
/// </summary>
public enum TokenType
{
    // ===== 关键字 =====
    /// <summary>关键字（整型、实型、若、则、复等）</summary>
    Keyword,
    
    /// <summary>类型关键字（整型、实型、文字、真假）</summary>
    TypeKeyword,
    
    /// <summary>数组类型关键字（整型组、实型组等）</summary>
    ArrayTypeKeyword,
    
    // ===== 字面量 =====
    /// <summary>整数字面量（10, -5, 0）</summary>
    IntegerLiteral,
    
    /// <summary>实数字面量（3.14, 99.99）</summary>
    DoubleLiteral,
    
    /// <summary>字符串字面量（"你好"）</summary>
    StringLiteral,
    
    /// <summary>布尔字面量（真真、假假）</summary>
    BooleanLiteral,
    
    // ===== 标识符 =====
    /// <summary>标识符（变量名、函数名）</summary>
    Identifier,
    
    // ===== 运算符 =====
    /// <summary>算术运算符（+, -, *, ÷, %）</summary>
    Operator,
    
    /// <summary>比较运算符（》, 《, 同, 不同等）</summary>
    ComparisonOperator,
    
    /// <summary>逻辑运算符（且, 或, 不）</summary>
    LogicalOperator,
    
    // ===== 分隔符 =====
    /// <summary>标点符号（。, ，, （, ）, {, }, 【, 】等）</summary>
    Punctuation,
    
    // ===== 特殊 =====
    /// <summary>注释</summary>
    Comment,
    
    /// <summary>文件结束</summary>
    EOF,
    
    /// <summary>错误Token</summary>
    Error
}

